;; BUILTINS

(error "<std>" 3)

(cons "<std>" 2)
(car "<std>" 1)
(cdr "<std>" 1)
(set-car! "<std>" 2)
(set-cdr! "<std>" 2)
(null? "<std>" 1)
(pair? "<std>" 1)
(symbol? "<std>" 1)
(string? "<std>" 1)
(char? "<std>" 1)
(boolean? "<std>" 1)
(number? "<std>" 1)

(%display "<std>" 1)
(newline "<std>" 0)
(exit "<std>" 0)

; equality
(eq? "<std>" 2)
(= "<std>" 2)

; arithmetic
(* "<std>" 2)
(/ "<std>" 2)
(+ "<std>" 2)
(- "<std>" 2)
(modulo "<std>" 2)
(quotient "<std>" 2)
(remainder "<std>" 2)
(> "<std>" 2)
(< "<std>" 2)
(>= "<std>" 2)
(<= "<std>" 2)

; vector
(make-vector "<std>" 2)
(vector? "<std>" 1)
(vector-ref "<std>" 2)
(vector-set! "<std>" 3)
(vector-length "<std>" 1)

; string
(make-string "<std>" 2)
(string-length "<std>" 1)
(string-ref "<std>" 2)
(string-set! "<std>" 3)
(string->symbol "<std>" 1)
(string=? "<std>" 2)
(string-append "<std>" 2)

; io
(read-char "<std>" 1)
(peek-char "<std>" 1)
(eof-object? "<std>" 1)
(open-input-port "<std>" 1)
(close-port "<std>" 1)
(standard-input "<std>" #f)
(argv "<std>" #f)

; vm
(vm:open "<std>" 0)
(vm:finish "<std>" 1)
(display:port "<std>" 2)

(gensym "<std>" 1)

(integer->char "<std>" 1)
(char->integer "<std>" 1)
(symbol->string "<std>" 1)

;; lists.scm

(length "std/lists.scm" 1)	
(concat-map "std/lists.scm" 2)
(concatenate "std/lists.scm" 1)
(filter "std/lists.scm" 2)
(reverse "std/lists.scm" 1)
(revappend "std/lists.scm" 2)
(append "std/lists.scm" 2)
(for-each "std/lists.scm" 2)
(map "std/lists.scm" 2)
(foldl "std/lists.scm" 3)
(member "std/lists.scm" 2)
(copy-list "std/lists.scm" 1)
(fold "std/lists.scm" 3)
(index "std/lists.scm" 2)

;; not.scm

(not "std/not.scm" 1)

;; numbers.scm

(odd? "std/numbers.scm" 1)
(even? "std/numbers.scm" 1)
(zero? "std/numbers.scm" 1)
(max "std/numbers.scm" 2)
(maximum "std/numbers.scm" 1)

; equal.scm
(equal? "std/equal.scm" 2)

;; vector.scm
(list->vector "std/vector.scm" 1)
(vector->list "std/vector.scm" 1)

;; display.scm
(display "std/display.scm" 1)
(print "std/display.scm" 1)

;; assoc.scm
(assoc "std/assoc.scm" 2)

;; boxes.scm
(set-box! "std/boxes.scm" 2)
(unbox "std/boxes.scm" 1)
(box? "std/boxes.scm" 1)
(box "std/boxes.scm" 1)
(push-box! "std/boxes.scm" 2)

;; cxr

(cddddr "std/cxr.scm" 1)
(cadddr "std/cxr.scm" 1)
(cdddr "std/cxr.scm" 1)
(cddar "std/cxr.scm" 1)
(cdadr "std/cxr.scm" 1)
(cdaar "std/cxr.scm" 1)
(caddr "std/cxr.scm" 1)
(cadar "std/cxr.scm" 1)
(caadr "std/cxr.scm" 1)
(caaar "std/cxr.scm" 1)
(cddr "std/cxr.scm" 1)
(cdar "std/cxr.scm" 1)
(cadr "std/cxr.scm" 1)
(caar "std/cxr.scm" 1)
(cadadr "std/cxr.scm" 1)
(cddadr "std/cxr.scm" 1)
(cadadr "std/cxr.scm" 1)

;; stack

(stack-get "std/stack.scm" 1)
(stack-push! "std/stack.scm" 2)
(stack-pop! "std/stack.scm" 1)
(stack-top "std/stack.scm" 1)
(make-stack "std/stack.scm" 1)
(empty-stack "std/stack.scm" 0)


;; queue

(queue->list "std/queue.scm" 1)
(queue-pop! "std/queue.scm" 1)
(queue-push! "std/queue.scm" 2)
(queue:bot! "std/queue.scm" 2)
(queue:top! "std/queue.scm" 2)
(queue:bot "std/queue.scm" 1)
(queue:top "std/queue.scm" 1)
(empty-queue "std/queue.scm" 0)



;; parser

(read-s+ "std/parser.scm" 3)
(read-s+/close "std/parser.scm" 2)
(read-s "std/parser.scm" 2)
(read-s* "std/parser.scm" 1)
(strip-token "std/parser.scm" 1)
(parser:strip "std/parser.scm" #f)
(step "std/parser.scm" 2)
(accepting? "std/parser.scm" 1)
(start-state "std/parser.scm" #f)
(tokenize "std/parser.scm" 2)
(tell "std/parser.scm" 0)
(close-token "std/parser.scm" 2)
(open-token "std/parser.scm" 2)
(dot-token "std/parser.scm" 2)
(quasiquote-mark-token "std/parser.scm" 2)
(unquote-mark-token "std/parser.scm" 2)
(quote-mark-token "std/parser.scm" 2)
(string-token "std/parser.scm" 2)
(character-token "std/parser.scm" 2)
(boolean-token "std/parser.scm" 2)
(number-token "std/parser.scm" 2)
(symbol-token "std/parser.scm" 2)
(whitespace-token "std/parser.scm" 2)
(close-token? "std/parser.scm" 1)
(open-token? "std/parser.scm" 1)
(dot-token? "std/parser.scm" 1)
(mark-token? "std/parser.scm" 1)
(atomic-token? "std/parser.scm" 1)
(token-data "std/parser.scm" #f)
(token-metadata "std/parser.scm" #f)
(token-type "std/parser.scm" #f)
(token? "std/parser.scm" 1)
(make-token "std/parser.scm" 3)
(collector-get "std/parser.scm" 1)
(collect-append! "std/parser.scm" 2)
(find-tail "std/parser.scm" 1)
(collect! "std/parser.scm" 2)
(make-collector "std/parser.scm" 0)
(list->string "std/parser.scm" 1)
(string->number "std/parser.scm" 1)
(digit->number "std/parser.scm" 1)
(read-file "std/parser.scm" 1)
(read-port "std/parser.scm" 1)

;;; seq.scm

(seq-length "scm/seq.scm" 1)
(seq-length^ "scm/seq.scm" 2)
(seq->list "scm/seq.scm" 1)
(seq->dlist "scm/seq.scm" 2)
(cat-get-seqs "scm/seq.scm" 1)
(cat? "scm/seq.scm" 1)
(elt-get-elt "scm/seq.scm" 1)
(elt? "scm/seq.scm" 1)

(load-macros "compiler" 0)
(compile-stdin "compiler" 0)
(compile-and-run-file "compiler" 1)
(compile "compiler" 4)

; macro helpers

(foldr "std/macros.scm" 3)
(quasiquote^ "std/macros.scm" 1)
(cond-get-next "std/macros.scm" 1)
(else-clause? "std/macros.scm" 1)
(compile-case "std/macros.scm" 2)
(cond/clause-get-next "gen/macro-shapes.scm" 1)
(cond/clause-get-rest "gen/macro-shapes.scm" 1)
(cond/clause-get-test "gen/macro-shapes.scm" 1)
(cond/clause? "gen/macro-shapes.scm" 1)
(cond/=>-get-next "gen/macro-shapes.scm" 1)
(cond/=>-get-thunk "gen/macro-shapes.scm" 1)
(cond/=>-get-test "gen/macro-shapes.scm" 1)
(cond/=>? "gen/macro-shapes.scm" 1)
(cond/1-get-next "gen/macro-shapes.scm" 1)
(cond/1-get-one "gen/macro-shapes.scm" 1)
(cond/1? "gen/macro-shapes.scm" 1)
(cond/else-get-else "gen/macro-shapes.scm" 1)
(cond/else? "gen/macro-shapes.scm" 1)
(cond/0? "gen/macro-shapes.scm" 1)
(unquote-get-data "gen/macro-shapes.scm" 1)
(unquote? "gen/macro-shapes.scm" 1)

;;

(eval "compiler/eval.scm" 1)
(standard-input-port "compiler" #f)
